/*
 * Copyright (c) 2010-2011 NutShell.
 * [Project:YAM,Id:Module.java  2011-10-03 17:52:07 poplar.mumu ]
 */
package org.mumu.pawn.domain;

import org.hibernate.validator.constraints.Length;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 模块菜单表 实体
 * <br/>
 *
 * @author poplar.mumu
 * @version 1.0 2011-10-03 17:52:07
 * @since JDK 1.0
 */
@Entity
@Table(name = "MODULE")
public class Module implements Serializable {
    private static final long serialVersionUID = -2370131897751549534L;
    /**
     * 主键
     */
    private long id;
    /**
     * 模块名称
     */
    private String moduleName;
    /**
     * 模块URL
     */
    private String moduleUrl;
    /**
     * 模块描述
     */
    private String moduleDesc;
    /**
     * 创建时间
     */
    private long createTime;
    /**
     * 创建人
     */
    private long createActor;
    /**
     * 修改时间
     */
    private long updateTime;
    /**
     * 修改人
     */
    private long updateActor;
    /**
     * 排序
     */
    private int sort;
    /**
     * 模块相信操作信息
     */
    private List<Operate> operates = new ArrayList<Operate>();

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "MODULE")
    @OrderBy(value = "sort desc")
    public List<Operate> getOperates() {
        return operates;
    }

    public void setOperates(List<Operate> operates) {
        this.operates = operates;
    }

    /**
     * @return 主键
     */
    @Id
    @GeneratedValue
    public long getId() {
        return id;
    }

    /**
     * 设置 主键[ID]
     *
     * @param id 主键
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return 模块名称
     */
    @Column(name = "MODULE_NAME")
    @Length(min = 1, max = 30)
    @NotNull
    public String getModuleName() {
        return moduleName;
    }

    /**
     * 设置 模块名称[MODULE_NAME]
     *
     * @param moduleName 模块名称
     */
    public void setModuleName(String moduleName) {
        this.moduleName = moduleName;
    }

    /**
     * @return 模块URL
     */
    @Column(name = "MODULE_URL")
    @Length(max = 150)
    public String getModuleUrl() {
        return moduleUrl;
    }

    /**
     * 设置 模块URL[MODULE_URL]
     *
     * @param moduleUrl 模块URL
     */
    public void setModuleUrl(String moduleUrl) {
        this.moduleUrl = moduleUrl;
    }

    /**
     * @return 模块描述
     */
    @Column(name = "MODULE_DESC")
    public String getModuleDesc() {
        return moduleDesc;
    }

    /**
     * 设置 模块描述[MODULE_DESC]
     *
     * @param moduleDesc 模块描述
     */
    public void setModuleDesc(String moduleDesc) {
        this.moduleDesc = moduleDesc;
    }

    /**
     * @return 创建时间
     */
    @Column(name = "CREATE_TIME")
    public long getCreateTime() {
        return createTime;
    }

    /**
     * 设置 创建时间[CREATE_TIME]
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(long createTime) {
        this.createTime = createTime;
    }

    /**
     * @return 创建人
     */
    @Column(name = "CREATE_ACTOR")
    public long getCreateActor() {
        return createActor;
    }

    /**
     * 设置 创建人[CREATE_ACTOR]
     *
     * @param createActor 创建人
     */
    public void setCreateActor(long createActor) {
        this.createActor = createActor;
    }

    /**
     * @return 修改时间
     */
    @Column(name = "UPDATE_TIME")
    public long getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置 修改时间[UPDATE_TIME]
     *
     * @param updateTime 修改时间
     */
    public void setUpdateTime(long updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * @return 修改人
     */
    @Column(name = "UPDATE_ACTOR")
    public long getUpdateActor() {
        return updateActor;
    }

    /**
     * 设置 修改人[UPDATE_ACTOR]
     *
     * @param updateActor 修改人
     */
    public void setUpdateActor(long updateActor) {
        this.updateActor = updateActor;
    }


    public int getSort() {
        return sort;
    }

    public void setSort(int sort) {
        this.sort = sort;
    }
}